In today's computing devices such as desktops, laptops, servers, workstations, etc. as well as mobile computers such as handhelds, smart phones and personal digital assistants etc and intelligent appliances such as home control systems, alarm systems, sprinkler systems, collectively called hardware clients hereafter, many software applications run concurrently. In order to have multiple applications run in parallel, the operating system in the client creates a separate process for each such application and assigns chunks of time from the Central Processing Unit (CPU) using a scheduling mechanism. Each application executes in a process that can utilize such virtual memory as was assigned to it at the time of creation of the process. This memory may become corrupted as the application executes thereby causing the application to perform unintended and even malicious actions on the user's computer